package com.referencing_array_ypes;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TextCapitalizerGUI extends JFrame {
    private JTextArea inputTextArea;
    private JTextArea outputTextArea;
    private JButton capitalizeButton;

    public TextCapitalizerGUI() {
        super("Text Capitalizer");

        // 设置窗口布局为边界布局
        setLayout(new BorderLayout());

        // 创建输入文本区域
        inputTextArea = new JTextArea(5, 30);
        JScrollPane inputScrollPane = new JScrollPane(inputTextArea);

        // 创建输出文本区域
        outputTextArea = new JTextArea(5, 30);
        outputTextArea.setEditable(false); // 输出文本区域不可编辑
        JScrollPane outputScrollPane = new JScrollPane(outputTextArea);

        // 创建按钮
        capitalizeButton = new JButton("Capitalize");

        // 添加组件到窗口
        add(inputScrollPane, BorderLayout.NORTH);
        add(outputScrollPane, BorderLayout.CENTER);
        add(capitalizeButton, BorderLayout.SOUTH);

        // 设置窗口的默认关闭操作
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 为按钮添加事件监听器
        capitalizeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String inputText = inputTextArea.getText();
                if (!inputText.isEmpty()) {
                    String capitalizedText = capitalizeAndRemoveSpaces(inputText);
                    outputTextArea.setText(capitalizedText);
                }
            }
        });

        // 调整窗口大小并使其可见
        pack();
        setVisible(true);
    }

    private String capitalizeAndRemoveSpaces(String text) {
        // 使用空格分割字符串为单词数组
        String[] words = text.split(" ");
        // 建立一个StringBuilder来构建结果字符串
        StringBuilder builder = new StringBuilder();
        // 遍历单词数组
        for (String word : words) {
            // 确保单词不为空
            if (!word.isEmpty()) {
                // 将单词首字母转换为大写，并添加到StringBuilder
                builder.append(Character.toUpperCase(word.charAt(0)));
                // 如果单词有多个字符，添加其余字符（不包括空格）
                if (word.length() > 1) {
                    builder.append(word.substring(1).toLowerCase());
                }
            }
            // 不添加分隔符
        }
        // 返回处理后的字符串
        return builder.toString();
    }

    public static void main(String[] args) {
        // 在事件分派线程中运行GUI创建代码，以确保线程安全
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TextCapitalizerGUI();
            }
        });
    }
}